package com.chenbei.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chenbei.common.domain.vo.TreeNode;
import com.chenbei.system.domain.SysMenu;

import java.util.List;

public interface ISysMenuService extends IService<SysMenu> {

    /**
     * 新增菜单
     * @param menu 菜单实例
     */
    void add(SysMenu menu);

    /**
     * 根据id删除菜单
     * @param id 主键id
     */
    void deleteById(Long id);

    /**
     * 更新菜单
     * @param menu 菜单实例
     */
    void update(SysMenu menu);

    /**
     * 根据pid获取子菜单
     * @param pid 父节点id
     * @return 子节点列表
     */
    List<SysMenu> listByPid(Long pid);

    /**
     * 获取所有菜单树
     * @return 菜单树
     */
    List<TreeNode<SysMenu>> allTree();

    /**
     * 通过角色ID获取菜单树
     * @param roleIds 角色ID列表
     * @return List
     */
    List<SysMenu> listByRoleId(List<Long> roleIds);

    /**
     * 通过角色ID获取分配的菜单权限
     * @param roleId 角色ID
     * @return List
     */
    List<SysMenu> listByRoleId(Long roleId);
}
